package model

import "encoding/json"

type Job struct {
	JobId         string `json:"job_id"`
	ExecCode      string `json:"exec_code"`
	JobStatus     string `json:"job_status"`
	CurrentStep   int    `json:"current_step"`
	Tag           string `json:"tag"`
	IP            string `json:"ip"`
	OperationType string `json:"operation_type"`
	JobType       string `json:"job_type"`
	UsageType     string `json:"usage_type"`
}

type JobParams struct {
	JobId string          `json:"job_id"`
	Name  string          `json:"name"`
	Type  string          `json:"type"`
	Value json.RawMessage `json:"value"`
}

type JobOutputParams struct {
	JobId string          `json:"job_id"`
	Name  string          `json:"name"`
	Type  string          `json:"type"`
	Value json.RawMessage `json:"value"`
}

type SubJob struct {
	JobId    string `json:"job_id"`
	StepNum  int    `json:"step_num"`
	StepType string `json:"step_type"`

	Dependencies []int `json:"dependencies"` //依赖的步骤列表

	ScriptId      string `json:"script_id"`
	ScriptType    string `json:"script_type"`
	ScriptParam   string `json:"script_param"`
	ScriptContent string `json:"script_content"`
	ScriptTimeout int    `json:"script_timeout"`

	StartTime    int64           `json:"start_time"`
	EndTime      int64           `json:"end_time"`
	SubJobStatus string          `json:"sub_job_status"`
	Result       json.RawMessage `json:"result"`
}

type JobTask struct {
	Job          Job               `json:"job"`
	InputParams  []JobParams       `json:"input_params"`
	OutputParams []JobOutputParams `json:"output_params"`
	SubJobs      []SubJob          `json:"sub_jobs"`
}
